package com.ymm.driver.dao.mapper;

import com.ymm.driver.api.constants.Dto.DriverDto;
import com.ymm.driver.api.constants.Entity.DrbillEntity;
import com.ymm.driver.api.constants.Entity.DriverEntity;
import com.ymm.driver.api.utils.Result;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;

/**
 * @Company: CUG
 * @Description: TODO
 * @Author: LiYangyong
 * @Date: 2022/8/3/003 10:30
 **/
public interface DriverPersonalAllInformationMapper {

    public void addDriverById(@Param("driverPhone") String driverPhone, @Param("driverPassword")String driverPassword);

    public void updateDriverPasswordByPhone(@Param("driverPhone") String driverPhone, @Param("driverPassword")String driverPassword);

    public String selectDriverByPhone(String driverPhone);

//  public String selectDriverPasswordByPhone(String driverPhone);

    public void driverAuthentication(@Param("driverPhone")String driverPhone, @Param("driverIdNum")String driverIdNum, @Param("driverName")String driverName, @Param("driverCarType")Integer driverCarType, @Param("driverCarNum")String driverCarNum, @Param("driverSex")Integer driverSex);



    public void driverInfoAuthentication(@Param("driverPhone")String driverPhone, @Param("driverIdNum")String driverIdNum, @Param("driverName")String driverName, @Param("driverSex")Integer driverSex);
    public void carInfoAuthentication(@Param("driverPhone")String driverPhone, @Param("driverCarType")Integer driverCarType, @Param("driverCarNum")String driverCarNum);






    public DriverEntity selectDriverPasswordByPhone(String driverPhone);

    public void driverJoinVIP(@Param("driverId")BigInteger driverId, @Param("driverType")Integer driverType);
    public DriverEntity queryNowVipTime(BigInteger driverId);
    public void driverVipTime(@Param("driverId")BigInteger driverId, @Param("driverVipTime") Date driverVipTime);



    public DriverDto selectDriverDtoById(BigInteger driverId);

    public BigDecimal driverWallet(BigInteger driverId);


    public int selectDriverTypeByDriverId(BigInteger driverId);

    public void submitInformation(@Param("driverId") BigInteger driverId, @Param("driverPhone")String driverPhone, @Param("driverCarType")Integer driverCarType, @Param("driverCarNum")String driverCarNum);


    DriverEntity getDriverDetailsById(@Param("driverId") BigInteger driverId);

    List<DriverEntity> batchSearchDriverInfo(List<BigInteger> driverIds);

    Double getDriverProfitById(BigInteger driverId);

    void subtractDriverProfit(@Param("driverId")BigInteger driverId,@Param("mount")Double mount);

    void addDriverProfit(@Param("driverId")BigInteger driverId,@Param("driverProfit")Double driverProfit);




    public void drbillNormalAddPrice(@Param("driverId") BigInteger driverId, @Param("drbillPrice") Double drbillPrice, @Param("drbillType") Integer drbillType, @Param("drbillDescription") String drbillDescription);

    public void drbillNormalSubtractPrice(@Param("driverId") BigInteger driverId, @Param("drbillPrice") Double drbillPrice, @Param("drbillType") Integer drbillType, @Param("drbillDescription") String drbillDescription);

    public void drbillCollectPrice(@Param("driverId") BigInteger driverId, @Param("drbillPrice") Double drbillPrice, @Param("drbillType") Integer drbillType, @Param("drbillDescription") String drbillDescription);

    public void drbillCollectSKPrice(@Param("driverId") BigInteger driverId, @Param("drbillPrice") Double drbillPrice, @Param("drbillType") Integer drbillType, @Param("drbillDescription") String drbillDescription, @Param("orderId")BigInteger orderId);

    public List<DrbillEntity> showDrbill(@Param("driverId")BigInteger driverId);



    public void test(@Param("driverPhone") String driverPhone, @Param("driverPassword")String driverPassword);

}
